Method of fast typing twin special characters

ABSTRACT

A method for inputting character pairs in an electronic device having a user input device, a display for displaying characters input through the user input device, and a memory for storing characters input through the user input device, including storing a character input through the user input device in the memory and displaying the input character on the display; and determining if the input character is an opening character of a predefined character pair, and if so, automatically and without further user input, causing a corresponding closing character of the predefined character pair to be inserted in the memory and on the display, and locating an input pointer so that subsequently input characters will be inserted between the opening and closing characters in the memory and on the display.

CROSS REFERENCE TO RELATED APPLICATION

This application is a continuation of U.S. application Ser. No.12/849,919, filed Aug. 4, 2010, which is a continuation of U.S.application Ser. No. 11/595,744, filed Nov. 10, 2006, now U.S. Pat. No.7,791,592, which is a continuation of U.S. application Ser. No.10/339,198, filed on Jan. 9, 2003, now U.S. Pat. No. 7,167,178, theentire contents of all of which are incorporated herein by reference.

BACKGROUND OF INVENTION

The present invention is directed towards a character entry system andmethod for electronic devices, particularly small mobile devices such aswireless communications devices.

There is generally a need to keep the size of portable electronicdevices such as personal wireless communications devices small so thatthe devices can be worn on the body of the user or otherwise easilycarried by the user. As a result, the input mechanism for the portablecommunications device needs to be small and have a minimal number ofkeys optimized for use with a minimal number of keystrokes. An exampleof a hand-held electronic device having a keyboard optimized for usewith the thumbs is described in U.S. Pat. No. 6,396,482 issued May 28,2002, to Griffin et al. and assigned to the assignee of the presentinvention.

In written communication, there are a number of special characters thatare typically “paired” or “twinned” with other characters. For example,left or bracket characters such as “<”; “(”; “{”; and “[” are typicallypaired with respective right bracket characters “>”; “)”; “}” and “]”,with the left and right bracket characters (also often referred to asopen and close brackets, respectively) enclosing other characters.Similarly, quote characters (″) are typically paired together enclosingother characters. In the compressed physical keyboard designs or virtualon-screen keyboard designs of portable electronic devices, entry of suchcharacters can be cumbersome and may require a sequence of entry stepsto be taken for each character. Additionally, in a problem not justlimited to portable devices, users frequently forget to include theclosing or right character of a character pair. There are alsosituations when an opening sequence of characters is paired with aclosing sequence of characters with information nested between. Forexample HTML source code is structured using paired opening and closingsequences as: <HEAD> opening character sequence paired with the </HEAD>closing sequence, or opening <TITLE> paired with closing </TITLE>, or<TABLE> with </TABLE>.

Thus, there is a need for a method and system that optimizes user inputof commonly used character pairs or character sequence pairs,particularly in the context of mobile communications devices.

SUMMARY OF THE INVENTION

According to one aspect of the invention there is provided a method forinputting characters in an electronic device having a user input device,a display for displaying characters input through the user input device,and a memory for storing characters input through the user input device,including (a) receiving a character input through the user input device;and (b) determining if the input character is an opening character of apredefined character pair, and if so adding to the memory and displayingon the display, automatically and without further user input, both theopening character and a corresponding closing character of thepredefined character pair. Preferably, if previously input text has beentext selected, the opening character and the closing character are addedwith the selected text framed therebetween, otherwise an input cursor islocated so that subsequently input characters will be inserted betweenthe opening and closing characters in the memory and on the display. Themethod may also be used to automatically insert a closing charactersequence when an opening character sequence of a predetermined charactersequence pair is entered through the input device.

According to another aspect of the invention, there is provided anelectronic device that includes a user input device for allowing a userto input characters, a display for displaying input characters, a memoryfor storing input characters, and a processor connected to the displayscreen, the user input device and the memory, for receiving an inputsignal from the user input device, determining if the input signalcorresponds to an opening character of a predefined character pair andif so, causing a corresponding closing character of the character pairto be automatically inserted on the display screen and in the memory inaddition to and after the opening character. The processor may also beconfigured to locate an input cursor so that subsequently inputcharacters input through the user input device will be located betweenthe opening and closing characters.

Other aspects and features of the present invention will become apparentto those ordinarily skilled in the art upon review of the followingdescription of specific embodiments of the invention in conjunction withthe accompanying Figures.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments of the present invention will now be described, by way ofexample only, with reference to the attached Figures, wherein:

FIG. 1 is a block diagram of a mobile communication device to which thepresent invention may be applied;

FIG. 2 is a frontal view of the mobile communication device of FIG. 1;

FIG. 3 is a general block diagram showing the major software systems ofthe communications device;

FIG. 4 is a general flow diagram showing the operation of thecommunications device according to embodiments of the present invention;

FIG. 5 is a pseudo code representation of a method for locating anopening character of a character pair;

FIG. 6 is a pseudo code representation of a method for locating aclosing character of a character pair; and

FIG. 7 is a flow diagram showing exemplary information displayed on adisplay screen of the mobile communication device of FIG. 1 according toembodiments of the invention.

DETAILED DESCRIPTION

Referring now to the drawings, FIG. 1 is a block diagram of a mobilecommunication device 10 in which the present invention may beimplemented. The mobile communication device 10 is preferably ahand-held two-way communication device having at least datacommunication capabilities. The device preferably has the capability tocommunicate with other computer systems on the Internet. Depending onthe functionality provided by the device, the device may be referred toas a data messaging device, a two-way pager, a cellular telephone withdata messaging capabilities, a wireless Internet appliance or a datacommunication device (with or without telephony capabilities).

Where the device 10 is enabled for two-way communications, the devicewill incorporate a communication subsystem 11, including a receiver 12,a transmitter 14, and associated components such as one or more,preferably embedded or internal, antenna elements 16 and 18, localoscillators (LOs) 13, and a processing module such as a digital signalprocessor (DSP) 20. As will be apparent to those skilled in the field ofcommunications, the particular design of the communication subsystem 11will be dependent upon the communication network 19 in which the deviceis intended to operate. Network access requirements will also varydepending upon the type of network 19.

Signals received by the antenna 16 through the communication network 19are input to the receiver 12, which may perform such common receiverfunctions as signal amplification, frequency down conversion, filtering,channel selection and the like, and in the example system shown in FIG.1, analog to digital conversion. Communication functions such asdemodulation and decoding are performed by DSP 20. In a similar manner,signals to be transmitted are processed, including modulation andencoding for example, by the DSP 20 and input to the transmitter 14 fordigital to analog conversion, frequency up conversion, filtering,amplification and transmission over the communication network 19 via theantenna 18.

The DSP 20 not only processes communication signals, but also providesfor receiver and transmitter control. For example, the gains applied tocommunication signals in the receiver 12 and transmitter 14 may beadaptively controlled through automatic gain control algorithmsimplemented in the DSP 20.

The device 10 preferably includes a microprocessor 38 that controls theoverall operation of the device. Communication functions, including atleast data communications, are performed through the communicationsubsystem 11. The microprocessor 38 also interacts with further devicesubsystems such as the display 22, flash memory 24, random access memory(RAM) 26, auxiliary input/output (I/O) subsystems such as a thumbwheel28, serial port 30, keyboard 32 and any other device subsystems.

Some of the subsystems shown in FIG. 1 perform communication-relatedfunctions, whereas other subsystems may provide “resident” or on-devicefunctions. Notably, some subsystems, such as keyboard 32 and display 22for example, may be used for both communication-related functions, suchas entering a text message for transmission over a communicationnetwork, and device-resident functions such as a calculator or tasklist.

Operating system software used by the microprocessor 38 is preferablystored in a persistent store such as flash memory 24, which may insteadbe a read only memory (ROM) or similar storage element (not shown).Those skilled in the art will appreciate that the operating system,specific device applications, or parts thereof, may be temporarilyloaded into a volatile store such as RAM 26. It is contemplated thatreceived communication signals may also be stored to RAM 26, afterprocessing by communications subsystem 11.

The microprocessor 38, in addition to its operating system functions,preferably enables execution of software applications on the device. Apredetermined set of applications that control basic device operations,including at least data communication and input/output applications forexample, will normally be installed on the device 10 during manufacture.Further applications may also be loaded onto the device 10 through thenetwork 19, serial port 30 or any other suitable subsystem and installedby a user in the RAM 26 or preferably a non-volatile store such as flashmemory 24 for execution by the microprocessor 38.

In a data communication mode, a received signal such as a text messageor web page download will be processed by the communication subsystem11, stored in RAM 26, and input to the microprocessor 38, which willpreferably further process the received signal for output to the display22, or alternatively to an auxiliary I/O device. A user of device 10 mayalso compose data items such as email messages for example, using thekeyboard 32, which is preferably a complete alphanumeric keyboard ortelephone-type keypad, in conjunction with the display 22 and possiblythumbwheel 28. Such composed items may then be transmitted over acommunication network through the communication subsystem 11.

FIG. 2 is a front view of a handheld device 10 in which the presentinvention may be implemented. The keyboard 32 of device 10 preferablyincludes a plurality of letter or alphanumeric keys 40, which may bearranged in a conventional QWERTY layout or some other layout. Thekeyboard 32 also includes specialized keys 42, 44, 46, 48 and a spacebar 50. In one embodiment, key 42 is the “Alt” key, key 44 is the“Shift” key, key 46 is the “enter/line feed” key and key 48 is the“backspace” key. Thumbwheel 28 is shown in a vertical association nextto screen 22. The thumbwheel 28 and keyboard 32 may each includeassociated logic circuitry for converting the signals they generate to aformat suitable for application to the microprocessor 38. The keyboard32 and thumbwheel 28 are arranged such that they can be manipulated bythe thumbs of a user while the device 10 is held in the palms of theuser's hands.

According to embodiments of the invention, the microprocessor 38 isconfigured to recognize when the first character of a number ofpredefined character pairs is entered by a user, and then automaticallygenerate the second character of the pair and place an input cursor toinput data between the two characters of the character pair. Themicroprocessor 38 may also be configured to recognize when the firstcharacter of a character pair is entered at the same time that text hasbeen selected, and automatically cause the selected text to be framed bythe first character and the corresponding closing character of thecharacter pair. FIG. 3 is a general block diagram of the major softwaresubsystems involved in the autotext function of the present invention.Operating system 60 and various specialized applications 65 containinstructions for microprocessor 38. The operating system 60 includes orcommunicates with various drivers that act as interfaces between theoperating system and the hardware I/O subsystems of device 10. Forexample, the operating system 60 may include a keyboard driver 62 forreceiving input signals from keyboard 32 and logic circuitry associatedwith the thumbwheel 28, and a video driver 70 for outputting signals todisplay 22. The operating system 60 is responsible for accepting userinputs from the keyboard 32 and thumbwheel 28 and dispatching thoseinputs to selected specialized applications 65 that are provided ondevice 10 for managing different major features of the device. Forexample, among other things, the device could include a graphical ribbonapplication, a message compose application, a transport application, anaddress book application, a device options application, a cryptographicapplication and a database application, at least some of which areenabled to employ the autotext feature of the present invention.

According to one embodiment of the invention, at least one of thespecialized applications 65 (for example, a text message composeapplication) includes a text input application 66 that is enabled to usethe automatic pair character generation feature of the presentinvention. The text input application 66 is preferably enabled toperform conventional text input and editing functions, includingreceiving and processing user inputs from the operating system 60 andsending display information back to the operating system 60. Accordingto embodiments of the present invention, the text input application 66includes an autotext module 68 for facilitating character pairinsertions according to the present invention. A display field or buffer72 is maintained in RAM 26 by the text input application 66. The displayfield 72 includes a number of memory locations 71(1) . . . 72(k) forstoring successive characters that the text input application 66 hasreceived from the keyboard 32 via the operating system 60. When in anactive display mode, the text input application 66 causes operatingsystem 60 to display, in sequence, the content of the display field 72in successive display locations on device display 22, and also todisplay an input cursor to indicate a current input location both on thescreen and in the corresponding display field 72. More particularly, asknown in the art, the text input application maintains as a variable ina memory location an electronic pointer 74 to indicate where the nextcharacter input should be placed in the display field 72, and the cursoris displayed on the display 22 in a location that corresponds to thelocation indicated by the pointer 74 in the display field 72—theon-screen cursor is a visual representation of the electronic pointer74. The text input application 66 also maintains other conventionalpointers for conventional functions such as “text select” in which ablock of text can be highlighted for copying or deletion or case changeor other type block processing. In a preferred embodiment, the textinput application 66 also maintains LIFO stacks 76, for trackingcharacter pairs as explained in greater detail below.

FIG. 4 is a general flow diagram 400 of the major steps of the autotextfeature of the present invention. The process begins with a keyboardevent, namely an input from the depression of a key on the keyboard 32or manipulation of the thumbwheel 28 of the device 10 (step 402).Keyboard driver 62 detects a keyboard event using methods known in theart, for example, by periodically polling the electrical lines of thekeyboard or by receiving a hardware interrupt, and maps the particularelectrical signal to codes stored in a look up table or other buffer.Keyboard events may be mapped to “input character” codes or to “controlcharacter” codes. “Input characters” are those characters that are addedto the display field 72 and displayed on the screen 22, for examplealphanumeric characters and right and left bracket characters, amongother things. In one embodiment, the input character code referencesused may include the standard Unicode Set. “Control characters”correspond to keyboard events that are used to control the operatingsystem 60 and/or specialized applications such as the text inputapplication 66, for example commands to open menus and dialog boxes, andcommands to navigate in the text in the display field such as move thedisplay cursor, select text, delete text, etc.

Once a keyboard event is mapped to its corresponding code, the code ispassed to the text input application 66, where the autotext module 68determines if the keyboard event corresponds to a control character or,alternatively, to an input character (step 404). If the keyboard eventcorresponds to a control character, the control character is processedby a control character processing routine that is discussed furtherbelow. If the keyboard event corresponds to an input character code, theinput character is processed as follows. The autotext module 68determines if the input character corresponds to the first or openingcharacter in a character pair (step 406). In particular, the autotextmodule has access to a predefined list of special pair character codesthat correspond to the special characters that are typically the openingcharacter in a character pair. The autotext module also has access to alist of closing character codes that correspond to the openingcharacters. By way of example, Table 1 below shows an exemplary list ofopening characters and corresponding closing characters (alignedunderneath the opening characters) according to a preferred embodimentof the invention. For ease of explanation, the list in Table 1 showsthat actual characters rather than the character codes (for example, theclosing bracket “}” is shown in Table 1 rather than its correspondingcharacter code Unicode(Hex) 007D). Part or all of the lists may be hardcoded as part of the autotext module 68, or could be a user configurablelist stored in semi-persistent memory such as flash memory 24.

TABLE 1 LIST OF PREDETERMINED CHARACTER PAIRS OPENING CHARACTER ( { [ <“ CLOSING CHARACTER ) } ] > ”

If the autotext module 68 determines that the input character is not oneof the predetermined opening characters, then the input character isadded to the display field 72 (step 408), and the text input application66 instructs the operating system 60 to display the input character onan input display area of screen 22 followed by a cursor indicating thenext input location, after which the device waits for the next keydepression (step 402).

In one embodiment of the invention, in the event that the inputcharacter is determined in step 406 to be a first or opening characterin a character pair, the autotext module 68 then checks to see if theopening character is part of a sequence of characters that would notnormally require the corresponding closing character (step 410). Forexample, electronic body language such as “:(”, commonly recognized bycommitted e-mail users as a frown face, would not require a closingcharacter. In this regard, the autotext module 68 has access to apredefined list of character code sequences that do not normally requirea closing character. The list of excluded sequences could, in someembodiments, be user configurable. In step 410, the autotext module 68looks at the just entered character code of the opening character incombination with previously input character or characters (which arestored in display field 72) and determines if the combination results ina character code sequence in the predetermined list of excludedsequences (i.e. those that do not require a closing character'. If adetermination is made that a closing character is not needed, then theopening character is added to the display field 72 (step 408), and textinput application 66 instructs the operating system 60 to display theopening character on an input display area of screen 22 followed by acursor indicating the next input location, after which the device waitsfor the next key depression (step 402).

Returning now to step 410, if a determination is made that the openingcharacter will require a corresponding closing character, then theautotext module 68 checks the appropriate pointers maintained by thetext input application 66 to determine if any previously input text inthe display field 72 has been highlighted for block processing—or“selected”, as commonly known in the art. (Step 412) In the event thatno text is selected, the autotext module 68 adds both the openingcharacter and its corresponding closing character to the display field72 and the operating system 60 is instructed to display the openingcharacter followed by the corresponding closing character on the display22 (step 414). In a preferred embodiment, the autotext module 68 thenautomatically adds a trailing space character after the closingcharacter of the character pair to the display field 72 and causes thespace to be displayed on the screen 22 (step 416). The autotext module68 then causes the cursor position pointer 74 to point to a location inthe display field 72 (and the cursor to be located on display 22) sothat the next character input through the keyboard will be insertedbetween the opening and closing characters of the character pair (step418). In addition to positioning the cursor, the autotext module 68ensures that the text input application 66 is in what is commonly knownas “INSERT” mode, such that subsequently input characters will beinserted at the cursor location, pushing trailing characters (includingthe closing character) to the right without overwriting them. After step418, the autotext module 68 returns to step 402 to wait for the nextkeyboard event.

Turning again to step 412, in the event that previously input charactershave been selected, the autotext module 68 causes the input openingcharacter to be inserted into the display field 72, and on screen 22,into a location preceding the first character of the selected text, andcauses the corresponding closing character to be inserted into thedisplay field 72, and on screen 22, into a location immediately afterthe last character of the selected text (step 420), thereby framing theselected text within the character pair without requiring the user toenter the closing character. In a preferred embodiment, a spacecharacter is added after the closing character. The cursor location (andcursor position pointer 74) is updated so that the next character willbe added to the immediate right of the space that trails the closingcharacter (step 422), after which the autotext module 68 loops back tostep 402 to wait for the next keyboard event.

Turning again to step 404, control character processing will now beexplained in greater detail. In embodiments of the invention, specialdelete processing for character pairs may be provided. In suchembodiments, if a keyboard event corresponds to a control character, theautotext module 68 checks to see if the keyboard event was thedepression of the delete key (step 424), and if so, performs a deleteprocessing routine, indicated generally by reference 425, which will bedescribed in greater detail below.

When a user wants to exit from inside a character pair, they can useconventional scroll key inputs to move the input cursor until visualfeedback from the screen 22 indicates that the input cursor ispositioned after the closing character and the trailing space. Forexample, in one embodiment of device 10 depression of the “alt” keycombined with a single increment downward roll of discrete thumbwheel 28is interpreted as the control character for moving the input cursor(and, in the figurative sense, the corresponding cursor locationpointer) a single location to the right. Some embodiments, such as thatshown in FIG. 4, may be configured to permit a user to automaticallyskip to the end of a character pair (and all text between the characterpair) upon entry of a key stroke or key stroke combination that isassociated with a predetermined “quick exit” control character. Forexample, in one embodiment, the predetermined “quick exit” controlcharacter could be mapped to the depression of the “cntrl” key and the“alt” key simultaneously. Having a quick exit function may beparticularly useful in a situation where the user has returned to editpreviously entered text within a character pair, as it can save the userthe time of having to scroll over several characters to get to the endof the character pair. In embodiments configured for a “quick exit” froma character pair, the autotext module 68 is configured to check if thecontrol character generated by a keyboard event corresponds to thepredetermined “quick exit” character (step 426). If it does not then thecontrol character is processed by the text input application 66according to its predetermined function (step 430).

It is possible that a “quick exit” character may have a differentfunction associated with it when it is not entered within a characterpair, and accordingly, if in step 426 it is determined that the “quickexit” character has been entered, the autotext module 68 then performs acheck to see if the input cursor is actually within a character pair atthe time that the “quick exit” entry is made (step 428). If the “quickexit” character has been entered outside of a character pair, the “quickexit” character is processed according to its alternative function, orignored as an incorrect entry if it has no alternative function (step430).

If in step 428 a determination is made that the “quick exit” characterwas made within a character pair, the input cursor location andcorresponding cursor position pointer are relocated to after the closingcharacter of the character pair (in particular, to after the spacecharacter that trails the closing character) (step 429).

One possible method according to embodiments of the invention fordetecting if the input cursor is located within a character pair in step428 will now be discussed. In such an embodiment, the autotext module 68uses Last In First Out (LIFO) stacks 76 in memory. In step 428, withcursor position pointer acting as a starting point reference, theautotext module first scans the characters in the display field 72preceding the input cursor to locate the opening character, and thenscans the succeeding characters to locate the corresponding closingcharacter. Using the LIFO stacks 76, the autotext module 68 can tracknested character pairs to ensure that it associates the correct openingcharacter with the correct closing character, and can also be configuredto detect incorrect character pairings and generate an error code orsignal for the user of an incorrect pairing. FIG. 5 shows pseudo code,indicated by reference 500, illustrating an exemplary routine forscanning characters preceding the cursor location to detect an openingcharacter, and FIG. 6 shows pseudo code, indicated by reference 600illustrating an exemplary routine for scanning characters subsequent tothe cursor location to detect the correct closing charactercorresponding to the opening character.

During the backward scan routine 500, the autotext module continuesscanning backward from the cursor location a character at a time untilit locates an opening character that is not paired with a closingcharacter that has already been added to the LIFO stack. The use of LIFOstack to track opening and closing characters scanned during thebackward scan routine 500 allows the autotext module to ignore characterpairs that are nested within the target character pair. An error issignalled if an unmatched nested character pair is located during thebackward scan. The backward scan routine 500 returns the found openingcharacter as variable j, and can also return the location of the openingcharacter as variable i if such location information is needed.

During forward scan routine 600, which is performed after backward scanroutine 500, the autotext module continues scanning forward from thecursor location a character at a time until it locates a closingcharacter that is not paired with an opening character that has alreadybeen added to the LIFO stack during the forward scan routine 600. Theuse of LIFO stack to track opening and closing characters scanned duringthe forward scan routine 600 allows the autotext module to ignorecharacter pairs that are nested within the target character pair. Anerror is signalled if an unmatched nested character pair (for example “[}”) is located during the backward scan. When the target closingcharacter is found, a check is made to determine if it corresponds tothe opening character found during backward scan routine 500, and ifnot, an error is signalled that an unmatched pair has been entered, andif so, the forward scan routine 600 returns the location of the targetclosing character as variable n, thereby providing the informationneeded to perform a “quick exit” by relocating the cursor to after theclosing character of the character pair.

Referring again to FIG. 4, the delete processing routine 425 will now beexplained in greater detail. Routine 425 permits both the opening andclosing characters of a character pair to be simultaneously deleted wheneither the opening character or the closing character is selected fordeletion by the user. For example, when the delete key is pressed, theautotext module 68 checks to see if the character to be deleted (asdetermined by the input cursor location) is a closing character or anopening character of one of the predetermined character pairs (steps432, 434). If not, the character deletion is carried out in the normalmanner (step 436). If however, the character to be deleted is either anopening character or a closing character of one of the predeterminedcharacter pairs, the autotext module 68 performs forward and backwardscanning routines (for example routines 500, 600) to determine if theopening (or closing) character is paired with its corresponding closing(or opening) character, and also to determine the location of theopening and closing characters if a pair exists (step 438). If acharacter pair is found, then both the opening and closing charactersare deleted from the display field 72 and screen 22 (step 440). If nocharacter pair is found, then only the character located adjacent theinput cursor is deleted (step 436). It will be appreciated that deleteroutine 425 could also be configured to work with the backspacefunction.

Thus, in summary, it will be appreciated from the flowchart of FIG. 4that upon detecting that a user of the device 10 has entered a characterthat falls within the list of predetermined opening characters, theautotext module 68 causes both the opening character and itscorresponding closing character, followed by a space character to beadded to the display field 72 and displayed on the display 22, andpositions the input cursor to locate any subsequently input characterswithin the opening and closing character pair. The user can exit frominside a character pair either by scrolling one character at a time, orcan jump to after the closing character of the character pair byentering a predetermined quick exit key or key combination. A user canquickly encapsulate text within the opening and closing characters of acharacter pair by selecting the text and then entering the openingcharacter (in some text editors that are configured to perform a blockdelete of selected text, it will be necessary to configure the editor tooverride such function when one of the predetermined opening charactersis entered in combination with selected text).

The present invention saves the user the trouble of having to manuallyenter the closing character of a character pair and the trailing spacethat typically follows such a character. In reduced key configurationssuch as those commonly found in mobile devices, such a feature can beparticularly time saving as some special pair closing characters, forexample the character “}” may require the user to take a number ofdifferent actions to enter. Furthermore, such a feature ensures that theuser does not forget the closing character.

In order to provide a better understanding of the invention, anillustrative example of the operation of the device 10 according toembodiments of the invention will be explained with reference to FIG. 7.FIG. 7 shows, in sequential order, characters stored in the displayfield 72 and shown on display 22 in response to a series of keyboardevents. In the illustrated example, a user enters the opening paircharacter ‘{’, which, as indicated by reference 701, is added to thedisplay field 72 and displayed on display 22. The autotext module 68determines that the entered character falls within the list ofpredetermined special character pairs, and, as indicated by reference702, causes the corresponding closing character “}” and a trailing spaceSp to be automatically inserted. Additionally, the input cursor,represented by dashed line box 706, is positioned at the same locationas the closing character so that any subsequently entered characterswill be inserted before the closing character “}” and after the openingcharacter “{”, with the closing character pushed further right with eachsubsequent character entry. In the illustrated example, the user entersthe characters “Text”, as indicated by reference 703. As indicated byreference 704, upon the user entering the designated exit key or keycombination, the input cursor 706 jumps over the closing character “}”and the trailing space Sp to the next available input location.

In some embodiments, the autotext module may be configured to determinein step 414, by using forward and backward scanning routines similar toroutines 500, 600, if it is processing a nested character pair, and ifso, to skip adding a trailing space after the closing character. In someembodiments, the autotext module 68 may be configured not to insert anytrailing space after the closing pair character. In some embodiments,the autotext module 68 may be configured to automatically insert spacesimmediately after the opening character and immediately before theclosing character of a character pair. In some embodiments, the locationof automatically inserted spaces in and around the predefined characterpairs could be user configurable.

In some embodiments of the invention, the autotext module 68 isconfigured to automatically insert a closing character sequence thatcorresponds to an opening character sequence, and position the inputcursor between the opening and closing character sequences. As notedabove, there are situations when an opening sequence of characters ispaired with a closing sequence of characters with information nestedbetween. For example HTML source code is structured using paired openingand closing sequences as: <HEAD> opening character sequence paired withthe </HEAD> closing sequence, or opening <TITLE> paired with closing</TITLE>, or <TABLE> with </TABLE>. It will be appreciated that themethods described above in respect of character pairs consisting of asingle opening and a single closing character are easily adaptable foruse with opening and closing character sequences. Conventional textprediction routines could be used to speed up entry of the openingsequence, with the autotext module of the present inventionautomatically inserting the corresponding closing sequence andpositioning the input cursor.

In some embodiments, all or some of the functions of the autotext module68 could be implemented as an application separate from any specifictext input application 66, thus allowing several text input applicationsto call on and use a single autotext module 68. Functions of theautotext module 68 and text input application could also be integratedinto the operating system 60.

It will be appreciated that in addition to automatic pair characterinsertion, the device 10 could also have other autotext functions suchas those described, for example, in the above mentioned U.S. Pat. No.6,396,482. Although the device 10 has been described as a mobilecommunications device, embodiments of the present invention could alsobe applied to electronic devices that are neither communications devicesor mobile. In addition to the physical keyboard described above, theautomatic text insertion of the present invention could work withvirtual keyboard systems (for example, on-screen stylus input systems)and other character entry systems as well.

Although the invention has been described above in the context of a leftto right language system such as the English language, it could also beapplied to other language systems such as Arabic and Japanese.

The above-described embodiments of the present invention are intended tobe examples only. Alterations, modifications and variations may beeffected to the particular embodiments by those skilled in the artwithout departing from the scope of the invention, which is defined bythe claims appended hereto.

1. A method for inputting characters in an electronic device having aninput device for receiving inputs including characters, a display fordisplaying characters received by the input device, and a memory forstoring characters received by the input device, comprising: determiningif a character received by the input device is an opening character of aparticular character pair, the particular character pair being one of aplurality of stored character pairs; and automatically displaying on thedisplay a corresponding closing character of the particular characterpair based on the determination that the character received by the inputdevice is an opening character of the particular character pair.
 2. Themethod of claim 1, further comprising: determining, when an input cursoris located between displayed opening and closing characters of theparticular character pair, if an input received through the input devicecorresponds to a predetermined exit input, and if so relocating theinput cursor for subsequently received characters to be inserted on thedisplay after the closing character.
 3. The method of claim 1, whereinit is determined that the character received by the input device is theopening character, the method further comprising: determining if anypreviously received character has been selected, and if so displaying onthe display the opening character and the closing character with theselected character framed therebetween.
 4. The method of claim 1,wherein it is determined that the character received by the input deviceis the opening character, the method further comprising: determining ifany previously received character has been selected, and if sodisplaying on the display the opening character and the closingcharacter with the selected character framed therebetween, and if notlocating an input cursor for subsequently received characters to beinserted between the opening and closing characters on the display. 5.The method of claim 1, further comprising: automatically inserting aspace character after the closing character on the display.
 6. Themethod of claim 1, wherein the plurality of stored character pairscomprise the open and close bracket pairs { }; ( ); < >; and [ ].
 7. Themethod of claim 1, further comprising: determining that an inputreceived through the input device corresponds to a predetermined deleteinput; and determining if an input cursor is located to delete either anopening or a closing character of a predetermined character pair, and ifso deleting both the opening and closing characters.
 8. The method ofclaim 1, further comprising: receiving a plurality of successivecharacters by the input device; displaying on the display the pluralityof successive characters; and determining if the plurality of successivecharacters correspond to an opening character sequence of apredetermined character sequence pair, and if so displaying on thedisplay a corresponding closing character sequence of the charactersequence pair.
 9. The method of claim 1, further comprising: determiningwhich of the plurality of stored character pairs the opening charactercorresponds to.
 10. The method of claim 1, further comprising: locatingan input cursor to the right of the closing character on the display.11. The method of claim 1, further comprising: locating an input cursorbetween the opening and closing characters.
 12. An electronic device,comprising: an input device for receiving inputs including characters; adisplay for displaying characters received by the input device; a memoryfor storing characters received by the input device; and a processorconnected to the input device, the display, and the memory, theprocessor being configured to: determine if a character received by theinput device is an opening character of a particular character pair, theparticular character pair being one of a plurality of stored characterpairs; and automatically display on the display a corresponding closingcharacter of the particular character pair based on the determinationthat the character received by the input device is an opening characterof the particular character pair.
 13. The device of claim 12, whereinthe processor is further configured to: determine, when an input cursoris located between displayed opening and closing characters of theparticular character pair, if an input received through the input devicecorresponds to a predetermined exit input, and if so relocate the inputcursor for subsequently received characters to be inserted on thedisplay after the closing character.
 14. The device of claim 12, whereinit is determined that the character received by the input device is theopening character, the processor being further configured to: determineif any previously received character has been selected, and if sodisplay on the display the opening character and the closing characterwith the selected character framed therebetween.
 15. The device of claim12, wherein it is determined that the character received by the inputdevice is the opening character, the processor being further configuredto: determine if any previously received character has been selected,and if so display on the display the opening character and the closingcharacter with the selected character framed therebetween, and if notlocate an input cursor for subsequently received characters to beinserted between the opening and closing characters on the display. 16.The device of claim 12, wherein the processor is further configured to:automatically insert a space character after the closing character onthe display.
 17. The device of claim 12, wherein the plurality of storedcharacter pairs comprise the open and close bracket pairs { }; ( ); < >,and [ ].
 18. The device of claim 12, wherein the processor is furtherconfigured to: determine that an input received through the input devicecorresponds to a predetermined delete input; and determine if an inputcursor is located to delete either an opening or a closing character ofa predetermined character pair, and if so delete both the opening andclosing characters.
 19. The device of claim 12, wherein the processor isfurther configured to: receive a plurality of successive characters bythe input device; display on the display the plurality of successivecharacters; and determine if the plurality of successive characterscorrespond to an opening character sequence of a predetermined charactersequence pair, and if so display on the display a corresponding closingcharacter sequence of the character sequence pair.
 20. The device ofclaim 12, wherein the processor is further configured to: determinewhich of the plurality of stored character pairs the opening charactercorresponds to.
 21. The device of claim 12, wherein the processor isfurther configured to locate an input cursor to the right of the closingcharacter on the display.
 22. The device of claim 12, wherein theprocessor is further configured to locate an input cursor between theopening and closing characters.
 23. A computer program productcomprising a non-transitory computer readable medium carrying programcode means for inputting characters in an electronic device having aninput device, and a display for displaying characters received by theinput device, the program code means comprising: means for determiningif a character received by the input device is an opening character of aparticular character pair, the particular character pair being one of aplurality of stored character pairs; and means for automaticallydisplaying on the display a corresponding closing character of theparticular character pair based on the determination that the characterreceived by the input device is an opening character of the particularcharacter pair.